import WxService from 'helpers/WxService'
import Tools from 'helpers/Tools'

var AV = require('comm/av-weapp-min.js')

App({
  onLaunch: function () {
    // 初始化leancloud
    // LeanCloud 应用的 ID 和 Key
    AV.init({
      appId: 'E2Nk20S1J27F5OolQpFzeUIC-gzGzoHsz',
      appKey: 'tMq7zaJ1ndVR9xTry4pnww6z',
    });   
  },
  // 获取用户信息
  getUserInfo: function (cb) {
    var that = this
    if (this.globalData.userInfo) {
      typeof cb == "function" && cb(this.globalData.userInfo)
    } else {
      //调用登录接口
      wx.login({
        success: function () {
          wx.getUserInfo({
            success: function (res) {
              //console.log(res);
              // 自动登录到leancloud
              AV.User.loginWithWeapp().then(function(user){
                console.log(user);
                // 查出用户的所有信息
                var id = user.getObjectId()

                // 查出姓名
                new AV.Query('_User')
                  .equalTo('objectId', id)
                  .first()
                  .then(function(user){ 
                    // 保存用户数据
                    res.userInfo.dbUser = user.toJSON()
                    that.updateUserInfo(res.userInfo)
                    console.info(that.globalData.userInfo)
                    typeof cb == "function" && cb(that.globalData.userInfo)
                  })
                  .catch(console.error);

              }).catch(console.error)
            },
            fail:function(){
              wx.showModal({
                content: '你拒绝了授权，请重新删除小程序后，才能重新授权。',
                success: function(){
                  wx.redirectTo({
                    url: '/pages/error/error?message=授权失败'
                  })
                }
              })
            }
          })
        }
      })
    }
  },
  // 更新用户信息
  updateUserInfo:function(user){
    if(!user) return
    this.globalData.userInfo = user
    wx.setStorageSync('userInfo', user)
  },
  // 是否已经登录
  isLogin: function () {
    return this.globalData.userInfo != null;
  },
  // 全局数据
  globalData: {
    userInfo: null
  },
  WxService: new WxService, 
  Tools: new Tools
})